﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;

namespace MyLambda
{
    /// <summary>
    /// 1 委托简介
    /// 2 匿名方法 匿名类
    /// 3 lambda表达式
    /// 4 系统自带委托 Action/Func
    /// 5 扩展方法
    /// 6 Linq扩展
    /// 7 Linq简单回顾
    /// 8 作业
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            //lambda 和 委托一起用， 也经常和 linq组合一起用
            try
            {
                {
                    Console.WriteLine("Welcome to .net, hello world.");

                    LambdaShow l = new LambdaShow();
                    l.Show();
                    //扩展的方法
                    l.NoShow();
                }

                {
                    //匿名类
                    var model = new
                    {
                        Id = 1,
                        Name="Albert",
                        Age=21
                    };

                    //model.Name = "test";

                    var abc = 123;
                    Console.WriteLine( abc);

                }

                #region 扩展方法调用
                {
                    //扩展方法调用
                    int? ivalue = null;
                    int? ivalue2 = 1;

                    int i = ExtendShow.ToInt(ivalue);
                    i = ExtendShow.ToInt(ivalue2);

                    int i2= ivalue.ToInt();

                    new Action(() => { }).Execute();
                }
                #endregion

                #region linq
                {
                    LinqShow ls = new LinqShow();
                    ls.Show();
                }
                #endregion
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.Read();
        }
    }
}
